import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex);

export default new Vuex.Store({
    //  存储状态(变量)
  state: {
    //  全局变量   $store.state.count  使用
      //  购物车(未付款)
      list:JSON.parse(localStorage.getItem('list')||'[]'),
      // list:[],
      //  已付款(点击结算之后)
      paid:JSON.parse(localStorage.getItem('paid')||'[]'),
      // paid:[],
      //  待评价
      Evaluate:[],
      //  订单下标(点击切换待付款，已付款，全部订单)
      num:0,
      //  发现下标(点击切换推荐，周边，绝美赏秋地...)
      Num:0,
      //  当前购物车件数
      listNum:0,
      //  判断全选
      chkAll:false,
      //  判断删除遮罩层显示隐藏
      is_show:false,
      //  结算成功
      push:false,
      //  详情页数组
      arr:[],
      //  商品总数据
      particulars:[],
      //  登陆的用户名
      username:"你还没有登录~",
      //  控制登录和退出登录按钮
      Show:true,
  },
    //  修改状态，并且是同步的的  类似自定义事件
  mutations: {
    //  第一个参数不能改变，必须传state ,第二个参数是传递过来的数据

      //  点击加入购物车
    Add(state,list){
        var flag=false;
            state.list.some(value=>{
                if (value.id==list.id) {
                    value.count+=list.count;
                    flag=true;
                    return true
                }
            });
        if (!flag){
            state.list.push(list)
        }
        state.listNum++;
        },
      //  减少按钮
      handleReduce(state,index){
        if (state.list[index].count==1) return;
          state.list[index].count--;
          state.listNum--;
      },
      //  增加按钮
      handleAdd(state,index){
          state.list[index].count++;
          state.listNum++;
      },
      //  全选
      checkedAll(state) {//全选
          state.chkAll=!state.chkAll;
          if (state.chkAll) {
              state.list.forEach(value=>{
                  value.stat=true;
              })
          }else {
              state.list.forEach(value=>{
                  value.stat=false;
              })
          }
      },
      //  单选
      checkOne(state,index){
        state.list[index].stat=!state.list[index].stat;
        let flag=state.list.some(value=>{
            return value.stat==false
        });
          if (!flag){  //  全部选中了
              state.chkAll=true
          } else {
              state.chkAll=false
          }
      },
      // 判断是否有选中商品
      Del(state){
            let flag=state.list.some(value=>{
                return value.stat==true
            });
          if (!flag){  //  没有一件商品勾选
              state.is_show=false
          } else {
              state.is_show=true
          }
      },
      // 确认删除
      del(state){
          let arr=state.list.filter(value=>{
            return !value.stat
        });
          //  未选中的留下在购物车
          state.list=arr;
          state.chkAll=false;
          state.is_show=false;
      },
      //  结算
      Paid(state){
          let flag=state.list.some(value=>{
              return value.stat==true
          });
          if (!flag){  //  没有一件商品勾选
                state.push=false;
          } else {
              let arr1=[];
              state.list.forEach(value=>{
                  if (value.stat){  //  被勾选的
                      //  已结算
                      value.chk=true;
                      //  追加进结算数组
                      state.paid.push(value);
                      state.particulars.forEach(value1 => {
                          if (value.id==value1.id){
                              value1.sales+=value.count;
                          }
                      })
                  } else {
                      arr1.push(value);  //  不被勾选的
                  }
              });
                //  未结算
                state.list=arr1;
                state.chkAll=false;
                //  结算成功
                state.push=true;
          }
      },
      //  详情页
      xiang(state,index){
        state.arr=[];
        state.particulars.forEach((value1, index1) =>{
            if (index1==index) {
                state.arr.push(value1)
            }
        })
      },
      //  点击已购买再次预定
      xiang1(state,id){
        state.arr=[];
        state.particulars.forEach((value1) =>{
            if (value1.id==id) {
                state.arr.push(value1)
            }
        })
      },
      //  订单界面切换订单
      Gnum(state,index){
        state.num=index+1;
      },
      //  发现界面切换动态
      GNum(state,index){
        state.Num=index+1;
      },

  },
    //  异步操作 ，在组件中使用 $store.dispath('')
  actions: {
  },
    //  store的子模块 ，为了开发大型项目，方便状态管理
  modules: {
  },
  getters:{
      //  计算结算商品数量和总价
     getCount(state) {
         var c={
             count:0,
             total:0
         };
         state.list.forEach(value=>{
             if (value.stat){
                 c.count+=value.count;
                 c.total+=value.price * value.count;
             }
         });
         return c
     },
      // 商品总件数
      getNum(state){
         var num1=0;
        state.list.forEach(value => {
         num1+=value.count
        });
          return num1
      },
      //  选中列表
    Checked(state){
         var arr3=[];
        arr3=state.list.filter(value=>{
             return  value.stat
         });
        return arr3;
    }
  }
})
